package com.xx.secret.notify;

import com.alibaba.fastjson.JSONObject;
import com.xx.secret.core.ApiLoan;

import java.util.List;

/**
 * @author wangcheng
 * @date 2020/12/18
 */
public interface INotifyProcessor<T> extends ApiLoan {

    /**
     * 处理回调逻辑
     * @author wangcheng
     * @date 2020/12/24
     * @param urlSuffix 注册的业务路径
     * @param param 回调参数
     * @return: com.bsd.join.loan.notify.NotifyResult<T> 下游业务端处理不要返回null ,可以往上抛异常
    **/
    NotifyResult<T> handlerNotify(String urlSuffix,JSONObject param);

    /**
     * 注册路径 urlSuffix
     * 示例: push-approval
     * @return: java.lang.String
    **/
    List<String> registerNotifyUrl();

    /**
     * 是否需要验签 服务内部回调可能不需要
    **/
    default boolean needVerify() {
        return true;
    }

    /**
     * 回调路径参数 通过参数指定url路径
     * 三方可能固定回调路径 通过参数来区分通知
     **/
    default String getNotifyParamName() {
        return "";
    }

}
